package com.jsyl.application.base;

import java.io.Serializable;
import java.text.ParseException;
import java.util.List;
import java.util.Map;

import com.jsyl.entity.common.BaseEntity;
import com.jsyl.infra.utils.page.PageModel;

/**
 * application层 基类
 * 
 * @author binbinccut@163.com
 *
 * @param <E>
 */
public interface IBaseApplication<E extends BaseEntity> {

	public void save(E entity);

	public Long insert(E entity);

	public void update(E entity);

	public void delete(Serializable id);
	
	public void deleteByField(String fieldName, Object fieldVaue);

	public List<E> findAll();

	public E get(Serializable id);

	public E getByField(String fieldName, Object fieldVaue);
	
	public E getByFields(Map<String, Object> equalMap);

	public List<E> findByField(String fieldName, Object fieldVaue);

	public List<E> findByFieldsAndOrder(Map<String, Object> equalMap, Map<String, String> orderMap);

	/**
	 * 根据实体自己拼装查询， 需要自己实现该方法。
	 * 
	 * @param entity
	 * @return
	 */
	public List<E> findByCondition(E entity);

	public PageModel<E> query(PageModel<E> pageModel);

	/**
	 * 根据实体自己拼装查询， 需要自己实现该方法。
	 * 
	 * @param pageModel
	 * @param entity
	 * @return
	 */
	public PageModel<E> query(PageModel<E> pageModel, E entity);
}
